﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
namespace Utilities.Log
{
    public class LogHelper:ILog
    {
        private log4net.ILog log;

        public LogHelper(Type t)
        {
            log = log4net.LogManager.GetLogger(t);
        }

        public void error(Exception e)
        {
            log.Error(e);
        }

        public void error(string msg, Exception e)
        {
            log.Error(msg, e);
        }

        public void error(string msg)
        {
            log.Error(msg);
        }

        public void info(Exception e)
        {
            log.Info(e);
        }

        public void info(string msg, Exception e)
        {
            log.Info(msg, e);
        }

        public void info(string msg)
        {
            log.Info(msg);
        }

        public void debug(Exception e)
        {
            log.Debug(e);
        }

        public void debug(string msg, Exception e)
        {
            log.Debug(msg, e);
        }

        public void debug(string msg)
        {
            log.Debug(msg);
        }

        public void warning(Exception e)
        {
            log.Warn(e);
        }

        public void warning(string msg, Exception e)
        {
            log.Warn(msg, e);
        }
        public void warning(string msg)
        {
            log.Warn(msg);
        }

        public void fatal(Exception e)
        {
            log.Fatal(e);
        }

        public void fatal(string msg, Exception e)
        {
            log.Fatal(msg, e);
        }
        public void fatal(string msg)
        {
            log.Fatal(msg);
        }
    }

    public static class LogHelper<T>
    {
        private static LogHelper log;
        static LogHelper()
        {
            log = new LogHelper(typeof(T));
        }
        public static void error(Exception e)
        {
            log.error(e);
        }

        public static void error(string msg, Exception e)
        {
            log.error(msg, e);
        }

        public static void error(string msg)
        {
            log.error(msg);
        }

        public static void info(Exception e)
        {
            log.info(e);
        }

        public static void info(string msg, Exception e)
        {
            log.info(msg, e);
        }
        public static void info(string msg)
        {
            log.info(msg);
        }


        public static void debug(Exception e)
        {
            log.debug(e);
        }

        public static void debug(string msg, Exception e)
        {
            log.debug(msg, e);
        }
        public static void debug(string msg)
        {
            log.debug(msg);
        }

        public static void warning(Exception e)
        {
            log.warning(e);
        }

        public static void warning(string msg, Exception e)
        {
            log.warning(msg, e);
        }
        public static void warning(string msg)
        {
            log.warning(msg);
        }

        public static void fatal(Exception e)
        {
            log.fatal(e);
        }

        public static void fatal(string msg, Exception e)
        {
            log.fatal(msg, e);
        }
        public static void fatal(string msg)
        {
            log.fatal(msg);
        }
    }
}
